/**
 * 
 */
package vwg.na.vwm.rh.modulo.pad.util;

import java.util.List;

import javax.faces.bean.ManagedProperty;

import org.primefaces.event.NodeSelectEvent;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;

import vwg.na.vwm.rh.motorsdk.commons.entidades.Sociedad;
import vwg.na.vwm.rh.motorsdk.commons.entidades.UnidadOrganizativa;
import vwg.na.vwm.rh.motorsdk.commons.entidades.servicios.SociedadServicio;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.entidadesgrales.PadCapturaEjercicio;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.servicios.PadPlaneacionPersonalServicio;

/**
 * @author Joel Ochoa [joel.ochoa@vw.com.mx]
 *
 */
public abstract class ProcesoPlaneacionPersonalAbstract {
	
	@ManagedProperty("#{sociedadServicio}")
	protected SociedadServicio sociedadServicio;
	
	@ManagedProperty("#{padPlaneacionPersonalServicio}")
	protected PadPlaneacionPersonalServicio planeacionPersonalServicio;
	
	protected TreeNode root;
	
	protected TreeNode selectedNode;
    
	protected List<Sociedad> sociedades;
	protected String sociedad;
    
	protected boolean panelMsgShow;
	protected boolean panelCapturaShow;
	
	protected PadCapturaEjercicio capturaEjercicio;
	
	abstract public void onNodeSelect(NodeSelectEvent event);
	
	abstract public void processChangeSociedad();
	
	public SociedadServicio getSociedadServicio() {
		return sociedadServicio;
	}

	public void setSociedadServicio(SociedadServicio sociedadServicio) {
		this.sociedadServicio = sociedadServicio;
	}

	public PadPlaneacionPersonalServicio getPlaneacionPersonalServicio() {
		return planeacionPersonalServicio;
	}

	public void setPlaneacionPersonalServicio(
			PadPlaneacionPersonalServicio planeacionPersonalServicio) {
		this.planeacionPersonalServicio = planeacionPersonalServicio;
	}

	public TreeNode getRoot() {
		return root;
	}

	public void setRoot(TreeNode root) {
		this.root = root;
	}

	public TreeNode getSelectedNode() {
		return selectedNode;
	}

	public void setSelectedNode(TreeNode selectedNode) {
		this.selectedNode = selectedNode;
	}

	public List<Sociedad> getSociedades() {
		return sociedades;
	}

	public void setSociedades(List<Sociedad> sociedades) {
		this.sociedades = sociedades;
	}

	public String getSociedad() {
		return sociedad;
	}

	public void setSociedad(String sociedad) {
		this.sociedad = sociedad;
	}

	public boolean isPanelMsgShow() {
		return panelMsgShow;
	}

	public void setPanelMsgShow(boolean panelMsgShow) {
		this.panelMsgShow = panelMsgShow;
	}

	public boolean isPanelCapturaShow() {
		return panelCapturaShow;
	}

	public void setPanelCapturaShow(boolean panelCapturaShow) {
		this.panelCapturaShow = panelCapturaShow;
	}

	/**
	 * @return the capturaEjercicio
	 */
	public PadCapturaEjercicio getCapturaEjercicio() {
		return capturaEjercicio;
	}

	protected void initNodes(){
		
		root = new DefaultTreeNode("Root", null);
		UnidadOrganizativa uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("03000000");
		uo.setUnidadOrganizativaCorta("M");
		uo.setUnidadOrganizativaDescripcion("Presidencia Ejecutiva");
		TreeNode parentNode = new DefaultTreeNode(uo, root);
		parentNode.setSelectable(false);
		parentNode.setExpanded(true);
		
		/*uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("1");
		uo.setUnidadOrganizativaCorta("M-B");
		uo.setUnidadOrganizativaDescripcion("Compras Region Norteamerica");
		TreeNode childNode = new DefaultTreeNode(uo, parentNode);
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("2");
		uo.setUnidadOrganizativaCorta("M-C");
		uo.setUnidadOrganizativaDescripcion("NSO Wolkswagen de Mexico");
		childNode = new DefaultTreeNode(uo, parentNode);
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("3");
		uo.setUnidadOrganizativaCorta("M-F");
		uo.setUnidadOrganizativaDescripcion("Finanzas y Organizacion");
		childNode = new DefaultTreeNode(uo, parentNode);
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("4");
		uo.setUnidadOrganizativaCorta("M-GA");
		uo.setUnidadOrganizativaDescripcion("Sustentabilidad y Medio Ambiente");
		childNode = new DefaultTreeNode(uo, parentNode);*/
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("03000201");
		uo.setUnidadOrganizativaCorta("M-R");
		uo.setUnidadOrganizativaDescripcion("Recursos Humanos");
		TreeNode childNode = new DefaultTreeNode(uo, parentNode);
		
		parentNode = childNode;
		
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("03000210");
		uo.setUnidadOrganizativaCorta("M-RE");
		uo.setUnidadOrganizativaDescripcion("Capital Humano");
		childNode = new DefaultTreeNode(uo, parentNode);
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("03000415");
		uo.setUnidadOrganizativaCorta("M-RS");
		uo.setUnidadOrganizativaDescripcion("Gestion de la Salud");
		childNode = new DefaultTreeNode(uo, parentNode);
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("03000202");
		uo.setUnidadOrganizativaCorta("M-RP");
		uo.setUnidadOrganizativaDescripcion("Planeacion y Politicas de Personal");
		childNode = new DefaultTreeNode(uo, parentNode);
        
        selectedNode = childNode;
        parentNode.setExpanded(true);
        selectedNode.setSelected(true);
        
        uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("03000217");
		uo.setUnidadOrganizativaCorta("M-RR");
		uo.setUnidadOrganizativaDescripcion("Relaciones Laborales");
		childNode = new DefaultTreeNode(uo, parentNode);
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("03000215");
		uo.setUnidadOrganizativaCorta("M-RO");
		uo.setUnidadOrganizativaDescripcion("Seguridad VWM");
		uo = new UnidadOrganizativa();
		uo.setUnidadOrganizativa("03000532");
		uo.setUnidadOrganizativaCorta("M-RI");
		uo.setUnidadOrganizativaDescripcion("VW Instituto");
	}
	
	protected void activateCapturaPanel(boolean state){
		this.panelCapturaShow = state;
		this.panelMsgShow = !state;
	}
	
}